#include <iostream>
#include<windows.h>
#include<stdlib.h>
//#include <time.h>
//#include <sys/time.h>注释掉部分为ARM平台测试代码
using namespace std;

int main()
{
    for(int k=1;k<=10;k++)
    {


    int n=k*10;
    int **a=new int *[n];
    int *b=new int[n];
    for(int i=0;i<n;i++)
    {
     *(a+i)=new int[n];
    }
    double sum[n];
    long long head,tail,freq;
    for(int i=0;i<n;i++)
   {
       b[i]=i;
       for(int j=0;j<n;j++)
       {

           a[i][j]=i+j;
       }
       //       for(int j=0;j<n;j++)
       //{
         //  for(int i=0;i<n;i++)
       //{ sum[i]+=a[j][i] * b[j];}}此处注释掉的为Cache优化代码

   }
    QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
    QueryPerformanceCounter((LARGE_INTEGER*)&head);
    //   timeval start, finish;
    //    gettimeofday(&start, NULL);ARM平台测试时间函数
      for(int test=0;test<100;test++)
      {
      for(int i=0;i<n;i++)
       sum[i]=0.0;
       for(int j=0;j<n;j++)
       {
           for(int i=0;i<n;i++)
       {

        sum[i]+=a[j][i] * b[j];
       }
       }
       }
      QueryPerformanceCounter((LARGE_INTEGER*)&tail);
    cout<<(tail-head)*1000.0/(freq*100)<<endl;
    
    //gettimeofday(&finish, NULL); ARM
     //  double ti=1000000 * (finish.tv_sec - start.tv_sec) + finish.tv_usec - start.tv_usec;
     //  cout<<ti/100000<<endl;
    }
}
